#include "widget.h"
#include "ui_widget.h"
//QListWidget纵向列表控件-示例
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    create();
    //为纵向列表控件添加信息
    list_widget->addItem("C++");
    list_widget->addItem("java");
    list_widget->addItem("python");

    //当选中的元素发生变化时，就触发此信号，执行槽函数
    connect(list_widget,&QListWidget::currentItemChanged,this,&Widget::handler_listwidget);
    //当点击按钮时，分别做出对应的操作
    connect(button_insert,&QPushButton::clicked,this,&Widget::handler_insert);
    connect(button_erase,&QPushButton::clicked,this,&Widget::handler_erase);
}

Widget::~Widget()
{
    delete ui;
}

void Widget::create()
{
    list_widget=new QListWidget(this);
    list_widget->setGeometry(50,50,400,500);
    line_edit=new QLineEdit(this);
    line_edit->setGeometry(500,50,220,50);
    button_insert=new QPushButton(this);
    button_insert->setText("新增");
    button_insert->setGeometry(500,120,100,50);
    button_erase=new QPushButton(this);
    button_erase->setText("删除");
    button_erase->setGeometry(620,120,100,50);
}

void Widget::handler_listwidget(QListWidgetItem *current, QListWidgetItem *old)
{
    if(current!=nullptr)
    {
        qDebug()<<"当前选中的元素："<<current->text();
    }
    if(old!=nullptr)
    {
        qDebug()<<" 之前选中的元素："<<old->text();
    }
    qDebug()<<"\n";
}

void Widget::handler_insert()
{
    //获取当前输入框中的信息
    const QString str=line_edit->text();
    if(str.isEmpty()==false)
    {
        //只有信息不是空，才添加
        list_widget->addItem(str);
        //新增完成后，删除输入框中的内容
        line_edit->clear();
    }
}

void Widget::handler_erase()
{
    //获取当前列表中选中的元素下标
    int pos=list_widget->currentRow();
    if(pos<0)
    {
        //元素下标合法才删除
        return;
    }
    //删除
    list_widget->takeItem(pos);
}

